package com.daikun.common.iface;

import com.daikun.common.aop.annos.BaseCheckRequestParam;
import com.daikun.common.model.BaseResult;

import java.util.Map;

/**
 * 当前接口是对所有的 web 请求入参进行统一校验的接口，接口入参的对象可以实现这个接口，
 * 配合 {@link BaseCheckRequestParam} 注解，可以自动对参数进行校验，
 * 校验的逻辑是调用入参对象的 checkParam 方法
 * @author earl created 2025-07-03
 * @version init 0.0.1
 */
public interface BaseParamCheckIface {

    /**
     * 参数校验
     * 校验不通过的参数，可以存储到返回值 map 中，注解解析器会判断 map 是否为空，
     * 若为空，则才会进入到具体的 controller 方法中，否则会将 map 中的数据拼接为字符串，拦截返回，
     * 返回对象为 {@link BaseResult}，拼接的数据会填充到对象的 msg 属性中返回，固定 code 为 400
     * @return  key -> 字段名称
     *          val -> 当前字段校验失败的原因
     */
    Map<String, String> checkParam();

}
